package day04;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        List<String> names = new ArrayList<String>();
        names.add("张三丰");
        names.add("张无忌");
        names.add("张麻子");
        names.add("张二丰");
        names.add("张一丰");
        names.add("张四丰");

        List<String> list1 = new ArrayList<>();
        //遍历name集合
        names.forEach(name ->{
            //name以张开头
            if (name.startsWith("张")) {
                //添加到list1集合中
                list1.add(name);
            }
        });

        List<String> list2 = new ArrayList<>();
        list1.forEach(name ->{
            if (name.length() == 3){
                list2.add(name);
            }
        });
        list2.forEach(System.out::println);
        System.out.println("------------------------");
        //1.获取集合的流对象Stream流
        //2.删选，获取符合条件的元素
        //3.终结方法
        names.stream().filter(s->s.startsWith("张"))
                .filter(s-> s.length() ==3 )
                .forEach(System.out::println);
        System.out.println("------------------------");

        test1();
    }
    public static void test1(){
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);

       List<Integer> list1 = list.stream().filter(integer -> integer %2 == 0).toList();
        System.out.println(list1);
    }
//    public void test2(){
//        List<String> list = new ArrayList<>();
//        list.add("LAODI,23");
//        list.add("LAOMA,24");
//        list.add("LAOKAI,25");
//        //过滤年龄大于等于24岁的
//        Map<Object,Object> map = new list.stream().filter(s ->{
//            //将s切分开
//            String[] split = s.split(",");
//        });
//
//
//    }
    @Test
    public void test3(){
        List<String> list1 = new ArrayList<>();
        list1.add("董大伟");
        list1.add("蔡徐坤");
        list1.add("陈立农");
        list1.add("范丞丞");
        list1.add("王宝强");
        list1.add("光头强");

        List<String> list2 = new ArrayList<>();
        list2.add("古力娜扎");
        list2.add("杨塞罗");
        list2.add("杨过");
        list2.add("摩西");
        list2.add("古力娜扎");
        list2.add("古力娜扎");

        Stream<String> stream1 = list1.stream()
                .filter(new Predicate<String>() {
                    @Override
                    public boolean test(String s) {
                        return s.length() == 3;
                    }
                }).limit(2);
        Stream<String> stream2 = list2.stream()
                .filter(new Predicate<String>() {
                    @Override
                    public boolean test(String s) {
                        return s.startsWith("杨");
                    }
                }).skip(1);
        Stream.concat(stream1, stream2).forEach(System.out::println);
    }
}
